# -*- coding: utf-8 -*-
#
# Copyright 2009 Vanderbilt University
# 
# Licensed under the Apache License, Version 2.0 (the "License"); 
# you may not use this file except in compliance with the License. 
# You may obtain a copy of the License at 
# 
#     http://www.apache.org/licenses/LICENSE-2.0 
# 
# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
# See the License for the specific language governing permissions and 
# limitations under the License. 
"""

.. moduleauthor:: John Paulett <john.paulett -at- vanderbilt.edu>
"""
from __future__ import division
from hornet.event import GraphsReady
from hornet.file import write_csv
from hornet.plugin import Plugin, log
import hornet.network
import logging

logger = logging.getLogger(__name__)

class GraphStats(Plugin):
    """Simple plugin for retrieve the size (number of edges) and order (number
    of nodes) for each period. 
    """

    def accepted_events(self):
        return GraphsReady

    @log
    def notify(self, event):
        write_csv(self.output('simple_stats_%s.csv' % event.caller), 
                      stats_table(event.data))
        
def stats_table(graphs):
    """Returns a 2D list of the size and order for each graph."""
    return [[g.meta.period, g.size(), g.order()] for g in graphs]
    